{ "cells": [ { "cell_type": "markdown", "id": "f0f8fd17-b009-4279-bf25-e911eb645ada", "metadata": {}, "source": [ "# DAM-only Price-Quantity Example" ] }, { "cell_type": "code", "execution_count": 1, "id": "f475f84e-483e-4744-91e1-262fe4b7cbe3", "metadata": { "tags": [] }, "outputs": [], "source": [ "import generation_models as gm\n", "from tyba_client.client import Client\n", "import numpy as np\n", "import pandas as pd\n", "import os" ] }, { "cell_type": "code", "execution_count": 2, "id": "c2b80fd2-f3a6-4fe2-b5ba-cc4a4b1e702d", "metadata": { "tags": [] }, "outputs": [], "source": [ "client = Client(os.environ[\"TYBA_PAT\"])" ] }, { "cell_type": "code", "execution_count": 5, "id": "2d32e6cc-0981-4856-aaaa-286ce823cf07", "metadata": { "tags": [] }, "outputs": [], "source": [ "hours = 48\n", "n = 3\n", "\n", "model = gm.StandaloneStorageModel(\n", " energy_prices=gm.DARTPriceScenarios(\n", " rtm=np.random.random((n, hours)).tolist(),\n", " dam=np.random.random((n, hours)).tolist(),\n", " weights=[0.3, 0.2, 0.5], # probability of each scenario\n", " ),\n", " project_term=48,\n", " project_term_units=\"hours\",\n", " storage_inputs=gm.MultiStorageInputs(\n", " batteries=[gm.BatteryParams(\n", " power_capacity=1e3,\n", " energy_capacity=2 * 1e3 / 0.95,\n", " discharge_efficiency=0.95,\n", " charge_efficiency=0.95,\n", " degradation_rate=0.0,\n", " )],\n", " energy_strategy=gm.MarketConfig(\n", " da=gm.BidOfferStrategy.price_quantity, # Makes DAM price-quantity\n", " rt=None # Makes RTM cover DAM with quantity-only\n", " ),\n", " ),\n", ")" ] }, { "cell_type": "code", "execution_count": 8, "id": "b5b94b7a-fb6c-4f04-9073-e276d34ee681", "metadata": { "tags": [] }, "outputs": [], "source": [ "resp = client.schedule(model)\n", "resp.raise_for_status()\n", "id_ = resp.json()[\"id\"]" ] }, { "cell_type": "code", "execution_count": 12, "id": "c68d5c96-e6d2-4b53-a889-950a5e84bf0b", "metadata": { "tags": [] }, "outputs": [], "source": [ "res = pd.DataFrame(client.wait_on_result(id_))" ] }, { "cell_type": "code", "execution_count": 17, "id": "2e4569a6-62e9-4fc9-9f4f-bac72fe25b40", "metadata": { "tags": [] }, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
dam_discharge_offer_quantitydam_charge_offer_quantitydam_discharge_offer_pricedam_charge_offer_pricertm_dischargertm_charge
01.890044e-13216.0664821.000000e+061.000000e+061.890044e-13216.066482
10.000000e+001000.0000007.614937e-017.614917e-010.000000e+001000.000000
20.000000e+001000.0000006.186046e-011.806109e-010.000000e+001000.000000
38.050000e+020.0000000.000000e+000.000000e+008.050000e+020.000000
41.000000e+030.0000005.573063e-010.000000e+001.000000e+030.000000
50.000000e+001000.0000008.407292e-018.407272e-010.000000e+001000.000000
60.000000e+001000.0000006.272627e-016.272607e-010.000000e+001000.000000
71.000000e+030.0000005.772265e-010.000000e+001.000000e+030.000000
81.000000e+030.0000007.198444e-010.000000e+001.000000e+030.000000
90.000000e+001000.0000003.872528e-013.872518e-010.000000e+001000.000000
100.000000e+001000.0000005.584570e-015.584550e-010.000000e+001000.000000
118.050000e+020.0000005.767334e-010.000000e+008.050000e+020.000000
121.000000e+030.0000008.582361e-010.000000e+001.000000e+030.000000
130.000000e+001000.0000009.585975e-016.349638e-020.000000e+001000.000000
140.000000e+001000.0000007.119654e-017.119644e-010.000000e+001000.000000
151.000000e+030.0000000.000000e+000.000000e+001.000000e+030.000000
160.000000e+001000.0000009.535452e-011.931478e-020.000000e+001000.000000
170.000000e+00324.0997238.397077e-010.000000e+000.000000e+00324.099723
181.000000e+030.0000004.216720e-010.000000e+001.000000e+030.000000
198.050000e+020.0000004.078660e-010.000000e+008.050000e+020.000000
200.000000e+001000.0000005.187792e-015.483235e-020.000000e+001000.000000
211.000000e+030.0000007.054114e-010.000000e+001.000000e+030.000000
220.000000e+001000.0000004.819512e-014.819502e-010.000000e+001000.000000
231.000000e+030.0000003.470233e-010.000000e+001.000000e+030.000000
241.890044e-13216.0664821.000000e+062.647129e-011.890044e-13216.066482
250.000000e+001000.0000007.581790e-011.499880e-010.000000e+001000.000000
260.000000e+001000.0000005.931051e-018.834203e-020.000000e+001000.000000
271.000000e+030.0000000.000000e+000.000000e+001.000000e+030.000000
280.000000e+001000.0000009.152580e-010.000000e+000.000000e+001000.000000
298.050000e+020.0000003.562025e-010.000000e+008.050000e+020.000000
300.000000e+001000.0000004.023107e-011.000000e+060.000000e+001000.000000
311.000000e+030.0000004.495349e-010.000000e+001.000000e+030.000000
329.025000e+020.0000007.346889e-010.000000e+009.025000e+020.000000
330.000000e+001000.0000009.393563e-019.393543e-010.000000e+001000.000000
341.000000e+030.0000008.192541e-010.000000e+001.000000e+030.000000
350.000000e+001000.0000004.557418e-017.916343e-020.000000e+001000.000000
360.000000e+001000.0000001.523515e-011.000000e+060.000000e+001000.000000
371.000000e+030.0000005.690975e-015.690965e-011.000000e+030.000000
385.125000e+020.0000005.343337e-010.000000e+005.125000e+020.000000
390.000000e+001000.0000007.018872e-017.018852e-010.000000e+001000.000000
401.000000e+030.0000003.534662e-010.000000e+001.000000e+030.000000
410.000000e+001000.0000009.564798e-011.583405e-020.000000e+001000.000000
420.000000e+001000.0000005.455405e-015.455385e-010.000000e+001000.000000
439.025000e+020.0000004.851630e-010.000000e+009.025000e+020.000000
440.000000e+001000.0000008.337567e-018.337547e-010.000000e+001000.000000
451.000000e+030.0000007.589748e-010.000000e+001.000000e+030.000000
461.000000e+030.0000006.131428e-010.000000e+001.000000e+030.000000
470.000000e+000.0000006.833991e-010.000000e+000.000000e+000.000000
\n", "
" ], "text/plain": [ " dam_discharge_offer_quantity dam_charge_offer_quantity \\\n", "0 1.890044e-13 216.066482 \n", "1 0.000000e+00 1000.000000 \n", "2 0.000000e+00 1000.000000 \n", "3 8.050000e+02 0.000000 \n", "4 1.000000e+03 0.000000 \n", "5 0.000000e+00 1000.000000 \n", "6 0.000000e+00 1000.000000 \n", "7 1.000000e+03 0.000000 \n", "8 1.000000e+03 0.000000 \n", "9 0.000000e+00 1000.000000 \n", "10 0.000000e+00 1000.000000 \n", "11 8.050000e+02 0.000000 \n", "12 1.000000e+03 0.000000 \n", "13 0.000000e+00 1000.000000 \n", "14 0.000000e+00 1000.000000 \n", "15 1.000000e+03 0.000000 \n", "16 0.000000e+00 1000.000000 \n", "17 0.000000e+00 324.099723 \n", "18 1.000000e+03 0.000000 \n", "19 8.050000e+02 0.000000 \n", "20 0.000000e+00 1000.000000 \n", "21 1.000000e+03 0.000000 \n", "22 0.000000e+00 1000.000000 \n", "23 1.000000e+03 0.000000 \n", "24 1.890044e-13 216.066482 \n", "25 0.000000e+00 1000.000000 \n", "26 0.000000e+00 1000.000000 \n", "27 1.000000e+03 0.000000 \n", "28 0.000000e+00 1000.000000 \n", "29 8.050000e+02 0.000000 \n", "30 0.000000e+00 1000.000000 \n", "31 1.000000e+03 0.000000 \n", "32 9.025000e+02 0.000000 \n", "33 0.000000e+00 1000.000000 \n", "34 1.000000e+03 0.000000 \n", "35 0.000000e+00 1000.000000 \n", "36 0.000000e+00 1000.000000 \n", "37 1.000000e+03 0.000000 \n", "38 5.125000e+02 0.000000 \n", "39 0.000000e+00 1000.000000 \n", "40 1.000000e+03 0.000000 \n", "41 0.000000e+00 1000.000000 \n", "42 0.000000e+00 1000.000000 \n", "43 9.025000e+02 0.000000 \n", "44 0.000000e+00 1000.000000 \n", "45 1.000000e+03 0.000000 \n", "46 1.000000e+03 0.000000 \n", "47 0.000000e+00 0.000000 \n", "\n", " dam_discharge_offer_price dam_charge_offer_price rtm_discharge \\\n", "0 1.000000e+06 1.000000e+06 1.890044e-13 \n", "1 7.614937e-01 7.614917e-01 0.000000e+00 \n", "2 6.186046e-01 1.806109e-01 0.000000e+00 \n", "3 0.000000e+00 0.000000e+00 8.050000e+02 \n", "4 5.573063e-01 0.000000e+00 1.000000e+03 \n", "5 8.407292e-01 8.407272e-01 0.000000e+00 \n", "6 6.272627e-01 6.272607e-01 0.000000e+00 \n", "7 5.772265e-01 0.000000e+00 1.000000e+03 \n", "8 7.198444e-01 0.000000e+00 1.000000e+03 \n", "9 3.872528e-01 3.872518e-01 0.000000e+00 \n", "10 5.584570e-01 5.584550e-01 0.000000e+00 \n", "11 5.767334e-01 0.000000e+00 8.050000e+02 \n", "12 8.582361e-01 0.000000e+00 1.000000e+03 \n", "13 9.585975e-01 6.349638e-02 0.000000e+00 \n", "14 7.119654e-01 7.119644e-01 0.000000e+00 \n", "15 0.000000e+00 0.000000e+00 1.000000e+03 \n", "16 9.535452e-01 1.931478e-02 0.000000e+00 \n", "17 8.397077e-01 0.000000e+00 0.000000e+00 \n", "18 4.216720e-01 0.000000e+00 1.000000e+03 \n", "19 4.078660e-01 0.000000e+00 8.050000e+02 \n", "20 5.187792e-01 5.483235e-02 0.000000e+00 \n", "21 7.054114e-01 0.000000e+00 1.000000e+03 \n", "22 4.819512e-01 4.819502e-01 0.000000e+00 \n", "23 3.470233e-01 0.000000e+00 1.000000e+03 \n", "24 1.000000e+06 2.647129e-01 1.890044e-13 \n", "25 7.581790e-01 1.499880e-01 0.000000e+00 \n", "26 5.931051e-01 8.834203e-02 0.000000e+00 \n", "27 0.000000e+00 0.000000e+00 1.000000e+03 \n", "28 9.152580e-01 0.000000e+00 0.000000e+00 \n", "29 3.562025e-01 0.000000e+00 8.050000e+02 \n", "30 4.023107e-01 1.000000e+06 0.000000e+00 \n", "31 4.495349e-01 0.000000e+00 1.000000e+03 \n", "32 7.346889e-01 0.000000e+00 9.025000e+02 \n", "33 9.393563e-01 9.393543e-01 0.000000e+00 \n", "34 8.192541e-01 0.000000e+00 1.000000e+03 \n", "35 4.557418e-01 7.916343e-02 0.000000e+00 \n", "36 1.523515e-01 1.000000e+06 0.000000e+00 \n", "37 5.690975e-01 5.690965e-01 1.000000e+03 \n", "38 5.343337e-01 0.000000e+00 5.125000e+02 \n", "39 7.018872e-01 7.018852e-01 0.000000e+00 \n", "40 3.534662e-01 0.000000e+00 1.000000e+03 \n", "41 9.564798e-01 1.583405e-02 0.000000e+00 \n", "42 5.455405e-01 5.455385e-01 0.000000e+00 \n", "43 4.851630e-01 0.000000e+00 9.025000e+02 \n", "44 8.337567e-01 8.337547e-01 0.000000e+00 \n", "45 7.589748e-01 0.000000e+00 1.000000e+03 \n", "46 6.131428e-01 0.000000e+00 1.000000e+03 \n", "47 6.833991e-01 0.000000e+00 0.000000e+00 \n", "\n", " rtm_charge \n", "0 216.066482 \n", "1 1000.000000 \n", "2 1000.000000 \n", "3 0.000000 \n", "4 0.000000 \n", "5 1000.000000 \n", "6 1000.000000 \n", "7 0.000000 \n", "8 0.000000 \n", "9 1000.000000 \n", "10 1000.000000 \n", "11 0.000000 \n", "12 0.000000 \n", "13 1000.000000 \n", "14 1000.000000 \n", "15 0.000000 \n", "16 1000.000000 \n", "17 324.099723 \n", "18 0.000000 \n", "19 0.000000 \n", "20 1000.000000 \n", "21 0.000000 \n", "22 1000.000000 \n", "23 0.000000 \n", "24 216.066482 \n", "25 1000.000000 \n", "26 1000.000000 \n", "27 0.000000 \n", "28 1000.000000 \n", "29 0.000000 \n", "30 1000.000000 \n", "31 0.000000 \n", "32 0.000000 \n", "33 1000.000000 \n", "34 0.000000 \n", "35 1000.000000 \n", "36 1000.000000 \n", "37 0.000000 \n", "38 0.000000 \n", "39 1000.000000 \n", "40 0.000000 \n", "41 1000.000000 \n", "42 1000.000000 \n", "43 0.000000 \n", "44 1000.000000 \n", "45 0.000000 \n", "46 0.000000 \n", "47 0.000000 " ] }, "execution_count": 17, "metadata": {}, "output_type": "execute_result" } ], "source": [ "res[[\"dam_discharge_offer_quantity\", \"dam_charge_offer_quantity\", \"dam_discharge_offer_price\", \"dam_charge_offer_price\", \"rtm_discharge\", \"rtm_charge\"]]" ] }, { "cell_type": "code", "execution_count": 16, "id": "3bf4aeb5-2a4d-47b2-90ba-50b490d845de", "metadata": { "tags": [] }, "outputs": [ { "data": { "text/plain": [ "Index(['storage_discharge_max', 'charge_lo', 'soe_lo',\n", " 'export_limit_at_coupling', 'soe_mean', 'nominal_hvac_load',\n", " 'pre_hvac_total_output', 'negative_rtm_base_point', 'rtm_base_point',\n", " 'dam_discharge_offer_quantity', 'discharge_actual', 'total_output',\n", " 'soe_hi', 'output', 'dam_charge_offer_quantity', 'charge',\n", " 'pre_hvac_output', 'charge_hi', 'soe_actual',\n", " 'dam_discharge_offer_price', 'discharge_efficiency', 'discharge',\n", " 'battery_output', 'charge_actual', 'discharge_lo',\n", " 'import_limit_at_coupling', 'internal_energy', 'internal_energy_max',\n", " 'charge_efficiency', 'dam_charge_offer_price', 'rtm_charge',\n", " 'discharge_hi', 'hvac_load', 'rtm_discharge', 'pre_hvac_battery_output',\n", " 'soe_lo_hb'],\n", " dtype='object')" ] }, "execution_count": 16, "metadata": {}, "output_type": "execute_result" } ], "source": [ "res.columns" ] }, { "cell_type": "code", "execution_count": null, "id": "5af4a41b-cbec-4b32-8540-679f4bfdcdda", "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "Python 3 (ipykernel)", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.8.12" } }, "nbformat": 4, "nbformat_minor": 5 }